swaks - Expédier des mails depuis vos scripts sans MTA

envoi_courrielenvoi_courriel
 

Sommaire

Introduction

Installation

Utilisation

Fichier de configuration

 

Introduction



SWAKS pour SWiss Army Knife for SMTP, est un client SMTP, qui vous permettra d'envoyer facilement des mails dans vos scripts par exemple.
Avec lui, pas besoin d'installer postfix et de le configurer en relais SMTP !

Tout se passe en ligne de commande, bien qu'il y ait des fichiers de configuration au besoin.

Dans cet exemple, je vais partir avec une boite mail créée pour ce tuto :

Email : demo@linuxtricks.fr

Mot de passe : Demo@21
Pour envoyer du mail, j'ai besoin des paramètres SMTP de IONOS, l'hébergeur :

Serveur : smtp.ionos.fr

Port (pour TLS) : 587

Installation



Sous RHEL et dérivées, le dépôt EPEL est nécessaire. Après installation :

dnf install swaks
Sous Gentoo :

emerge -av swaks
Sous Archlinux :

yay -S swaks
Si on utilise du protocole SSL :

emerge -av dev-perl/Net-SSLeay

Utilisation



Testons le fonctionnement :

swaks -t destinataire@linuxtricks.fr -s smtp.1und1.de:587 -tls -au demo@linuxtricks.fr -ap Demo@21 -f demo@linuxtricks.fr

Un message contenant This is a test mailing sera envoyé avec en titre test Tue, 06 Apr 2021 09:44:22 +0200.

Quelques infos sur les options :
-t : Destinataire (to)
-s : SMTP à utiliser
-tls : On active le mode TLS (STARTTLS)
-au : Identifiant pour s'authentifier sur le SMTP (Auth Username)
-ap : Mot de passe pour s'authentifier sur le SMTP (Auth Password)
-f : Expéditeur (From). important sinon c'est envoyé depuis user@serveur !

On a en plus des traces de debug sur la console :

=== Trying smtp.1und1.de:587...

=== Connected to smtp.1und1.de.

<-  220 kundenserver.de (mreue010) Nemesis ESMTP Service ready

 -> EHLO SRV-RHEL-TUTOS-LT

<-  250-kundenserver.de Hello SRV-RHEL-TUTOS-LT [xx.xx.xx.xx]

<-  250-8BITMIME

<-  250-AUTH LOGIN PLAIN

<-  250-SIZE 140000000

<-  250 STARTTLS

 -> STARTTLS

<-  220 OK

=== TLS started with cipher TLSv1.3:TLS_AES_256_GCM_SHA384:256

=== TLS no local certificate set

=== TLS peer DN="/C=DE/O=1&1 IONOS SE/ST=Rheinland-Pfalz/L=Montabaur/CN=smtp.1und1.de"

 ~> EHLO SRV-RHEL-TUTOS-LT

<~  250-kundenserver.de Hello SRV-RHEL-TUTOS-LT [xx.xx.xx.xx]

<~  250-8BITMIME

<~  250-AUTH LOGIN PLAIN

<~  250 SIZE 140000000

 ~> AUTH LOGIN

<~  334 VXNlcm5hbWU6

 ~> ZGVtb0BsaW51eHRyaWNrcy5mcg==

<~  334 UGFzc3dvcmQ6

 ~> RGVtRGVtQDIxMjE=

<~  235 Authentication succeeded

 ~> MAIL FROM:<demo@linuxtricks.fr>

<~  250 Requested mail action okay, completed

 ~> RCPT TO:<demo@linuxtricks.fr>

<~  250 OK

 ~> DATA

<~  354 Start mail input; end with <CRLF>.<CRLF>

 ~> Date: Tue, 06 Apr 2021 09:44:22 +0200

 ~> To: demo@linuxtricks.fr

 ~> From: demo@linuxtricks.fr

 ~> Subject: test Tue, 06 Apr 2021 09:44:22 +0200

 ~> Message-Id: <20210406094422.052459@SRV-RHEL-TUTOS-LT>

 ~> X-Mailer: swaks v20181104.0 jetmore.org/john/code/swaks/

 ~>

 ~> This is a test mailing

 ~>

 ~>

 ~> .

<~  250 Requested mail action okay, completed: id=1MeCd5-1m2kU42mmt-00bHnr

 ~> QUIT

<~  221 kundenserver.de Service closing transmission channel

=== Connection closed with remote host.

 


Si on veut spécifier du texte dans le corps, on ajoutera l'option --body et pour le sujet, c'est --h-Subject :

swaks -t destinataire@linuxtricks.fr -s smtp.1und1.de:587 -tls -au demo@linuxtricks.fr -ap Demo@21 -f demo@linuxtricks.fr --body "Contenu du message" --h-Subject "Sujet du message"

Parfois, le contenu du message peut être long, on peut le stocker dans un fichier et indiquer le nom du fichier :

swaks -t destinataire@linuxtricks.fr -s smtp.1und1.de:587 -tls -au demo@linuxtricks.fr -ap Demo@21 -f demo@linuxtricks.fr --body /home/adrien/message.txt --h-Subject "Sujet du message"


Si on veut joindre un fichier, c'est --attach qu'on utilisera :

swaks -t demo@linuxtricks.fr -s smtp.1und1.de:587 -tls -au demo@linuxtricks.fr -ap Demo@21 -f demo@linuxtricks.fr --body /home/adrien/message.txt --h-Subject "Sujetde message" --attach fichier.txt


Enfin, si vous souhaitez cacher les informations de debug à l'écran, on pourra utiliser l'option --hide-all !

Fichier de configuration



Si on ne veut pas s'embêter avec toutes les options, on pourra créer un fichier de configuration dans notre dossier personnel nommé .swaksrc :

vi $HOME/.swaksrc

On y mettra toutes les options qu'on souhaite, 1 par ligne :

-s smtp.1und1.de:587

-tls

-au demo@linuxtricks.fr

-ap Demo@21

-f demo@linuxtricks.fr


Et maintenant, on a une ligne de commande plus courte puisque les informations de connexion sont dans un fichier de config :

swaks -t destinataire@linuxtricks.fr --body /home/adrien/message.txt --h-subject "Sujet du message"